package com.lzh.persevere.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lzh.persevere.model.entity.Role;
import com.lzh.persevere.model.entity.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;


/**
 * 用户表(User)表数据库访问层
 *
 * @author luzhiheng
 * @since 2022-09-26 16:50:17
 */
@Repository
public interface UserMapper extends BaseMapper<User> {

    /**
     * 根据用户ID查询用户
     *
     * @param userId 用户ID
     * @return 用户
     */
    List<String> getPermissionsByUserId(Long userId);

    /**
     * 根据邮箱查询用户
     *
     * @param email 邮箱
     * @return 用户
     */
    User selectByEmail(@Param("email") String email);

    /**
     * 根据用户id查询用户角色
     *
     * @param userId 用户id
     * @return 角色
     */
    List<Role> selectRolesByUserId(@Param("userId") Long userId);

    /**
     * 根据邮箱查询用户
     *
     * @param phone 手机号
     * @return 用户
     */
    User selectByPhone(@Param("phone") String phone);

    /**
     * 根据用户id查询用户角色字符串
     *
     * @param id 用户id
     * @return 角色字符串
     */
    List<String> queryRolesByUserId(@Param("userId") Long id);

    /**
     * 查询列表总记录数
     *
     * @param queryMap 查询参数
     * @return 总记录数
     */
    Integer countList(Map<String, Object> queryMap);

    /**
     * 获取列表
     *
     * @param queryMap 查询参数
     * @return 列表
     */
    List<Map<String, Object>> getPageList(Map<String, Object> queryMap);
}

